import java.util.HashMap;
import java.util.Map;
import java.util.Random;

/**
 * HashMap其实就是HashSet的底层实现,相当于只要键不要值就成了HashSet
 * HashMap依靠HashCode和equals保证键的唯一
 * LinkedHashMap顾名思义,就是在HashMap基础基础上加上双链表起到记录写入顺序的目的
 * TreeMap其实就是TreeSet的键值对版本,用键排序,可以给键的类实现Comparable接口然后重写比较器也可以直接匿名内部类然后在lambda简化
 */
public class MapTest {
    public static void main(String[] args) {
        //创建80个学生的选择
        String[] choice = {"A","B","C","D"};
        StringBuilder sb = new StringBuilder();
        Random r = new Random();
        for (int i = 0; i < 80; i++) {
            sb.append(choice[r.nextInt(choice.length)]);
        }
        String s = sb.toString();
        System.out.println(sb);

        //定义一个map集合记录结果
        Map<Character,Integer> maps = new HashMap<>();
        //遍历并记录
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if(maps.containsKey(c)){
                maps.put(c,maps.get(c)+1);
            }else{
                maps.put(c,1);
            }
        }

        System.out.println(maps);
    }
}
